//
//  CMBaseErrorCode.swift
//  covermedia
//
//  Created by travel on 2016/11/27.
//  Copyright © 2016年 covermedia. All rights reserved.
//

import Foundation


public enum CMBaseErrorCode: Int {
    case success = 0
    case failed
    case no_NETWORK
    case timeOut
    
    case authorizeDeny = 401 // 未授权
    case authorizeTimeout   // 上一次登录失效，请重新登录
    case authorizeRequired  // 用户需要登录
    case userNotExsit    // 该用户不存在
    case protected  // 受保护不能删除
    case codeInvalid    //验证码错误
    case existed    // 已经存在
    case authorizeFailedThird   // 第三方用户鉴权失败
    case positionNotExist   // 地区不存在
    case requestLimt    // 短时间内请求超限
    
    case argInvalid = 430   // 参数错误
    case argSignFail    // sign值校验失败，请检查参数
    
    case newsNotExist   // 新闻不存在
    case newsNoUpdate   // 新闻没有更新
    case codeRequestLimit   // 发送验证码，过于频繁，请稍候再试
    case commentNotExist    // 评论不存在
    case deleteDeny     // 不能删除
    
    case keyFail = 451   // 秘钥错误
    case fileError      // 文件有误
    case apkFileRequired    // 非apk文件
    case noVersionCode  // 无versionCode
    case higherVersionRequired  // 低于当前版本或已上传
    case fileSizeLimit   // 文件过大
    
    case appVersionTooOld = 460     // 客户端版本过低，不支持该类型新闻
    case modifyDeny = 480   // 暂时不能修改
    case nickNameInvalid   // 您输入的昵称包含敏感词请重新输入
    case dataLock       // 已经锁定，不允许修改
    case notExist   // 不存在
    
    case serverError = 500  // 服务器错误
    case serverRemoteError  // 调用远程文件服务器错误
}

open class CMBaseError {
    public var message: String? = ""
    public var code: CMBaseErrorCode = .success
}

// MARK: - 预定义错误
public extension CMBaseError {
    public class var defaultError: CMBaseError {
        let error = CMBaseError()
        error.code = .failed
        return error
    }
    
    public class var noNetworkError: CMBaseError {
        let error = CMBaseError()
        error.code = .no_NETWORK
        error.message = NSLocalizedString("no network", comment:"no network")
        return error
    }
    
    public class var timeOutError: CMBaseError {
        let error = CMBaseError()
        error.code = .timeOut
        error.message = NSLocalizedString("request timeout", comment:"request timeout")
        return error
    }
    
    public class var requestError: CMBaseError {
        let error = CMBaseError()
        error.code = .failed
        error.message = NSLocalizedString("request error", comment: "request error")
        return error
    }
    
    public class var messageRequestError:String {
        return NSLocalizedString("request error", comment: "request error")
    }
}
